/* POJ 1001 */
#include <stdio.h>

#define PRODUCT_SIZE 125

void multiply(char product[], int *len, int multiplier)
{
    int i, j, tmp[*len], carry;

    for (i = 0; i < *len; i++)
        tmp[i] = multiplier * product[i];

    for (i = 0; i < PRODUCT_SIZE; i++)
        product[i] = 0;

    for (i = 0; i < *len; i++) {
        j = i;
        carry = 0;
        while (tmp[i]) {
            product[j] += tmp[i] % 10 + carry;
            carry = product[j] / 10;
            product[j] %= 10;
            tmp[i] /= 10;
            j++;
        }
        if (carry)
            product[j++] += carry;
    }
    *len = j;
}

int main(int argc, char const *argv[])
{
    char R[7];
    int n;
    char product[PRODUCT_SIZE] = {0};
    int len = 0;
    int R_int;
    int point = 0;

    while (scanf("%s%d", R, &n) == 2) {
        int i = 6, j;
        while (R[--i] == '0');  // skip tailing zero
        for (j = 0; i >= 0; j++, i--) {
            if (R[i] == '.') {
                point = j--;
                continue;
            }
            product[j] = R[i] - '0';
        }
        // get length of product
        while (product[--j] == 0);
        len = ++j;
        // convert product to integer
        R_int = 0;
        while (j--)
            R_int = R_int * 10 + product[j];

        // calculate
        i = n - 1;
        while (i--)
            multiply(product, &len, R_int);
        point *= n;

        // print result
        if (len > point) {  // length greater than fractional part
            j = len;
            while (--j > point)   // print (len - point) numbers
                putchar(product[j] + '0');
            putchar(product[j] + '0');
            if (j)
	            putchar('.');
        } else {
            putchar('.');
            j = point + 1;
            while (--j > len)   // print (point - len) zeros
                putchar('0');
        }
        while (j--)
            putchar(product[j] + '0');
        putchar('\n');
    }

    return 0;
}
